home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d15 / fsp_151.arc / FSP.TXT < prev    next >
Text File  |  1991-04-28  |  79KB  |  2,311 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.                              FLU_SHOT+, Version 1.5
  29.  
  30.                             A Form of Protection from
  31.                             Viral and Trojan Programs
  32.  
  33.  
  34.                                        by
  35.                                 Ross M. Greenberg
  36.                                        and
  37.                             Software Concepts Design
  38.                                 594 Third Avenue
  39.                             New York, New York 10016
  40.                        BBS:(212)-889-6438 1200|2400|N/8/1
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.               FLUSHOT+ is a trademark of Software Concepts Design.
  72.                 Copyright (C), 1988 by Software Concepts Design.
  73.                               All Rights Reserved.
  74.  
  75.  
  76.         Not for Commercial Distribution without written permission by the
  77.         copyright holder. Noncommercial copying of this software and this
  78.         documentation is encouraged.  Commercial Distribution is easily
  79.         defined: if you distribute this software, or the enclosed
  80.         documentation, for more than your cost of such distribution, then
  81.         you're a Commercial Distributor and require our written
  82.         permission.  Not-for-profit organizations and computer user
  83.         groups, and their bulletin board systems (if any) are
  84.         specifically *not* considered commercial distributors.
  85.  
  86.         By your using this software, you agree to the terms herein. 
  87.         Specifically, that you do not have the right to copy this
  88.         software except as outlined above, and that you are granted a
  89.         license to use this software only by registering this software as
  90.         mentioned elsewhere in this document.
  91.  
  92.         You also agree, and signify that agreement by using this
  93.         software, that Software Concepts Design and Ross M. Greenberg
  94.         will not be held liable for any reason for any cost you may
  95.         incur, or any potential income you might lose as a result of
  96.         using this software.  Finally, this software is provided "AS IS",
  97.         meaning that what you see is what you get.  If you use this
  98.         software and a tree falls on your house, or your spouse leaves
  99.         you for someone younger and more virile, please do not bother
  100.         having your lawyer call -- it isn't the fault of the software, no
  101.         matter what the lawyer tries to convince you!
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.         Table of Contents
  138.  
  139.         I.   Introduction
  140.              a.   What is a Trojan.....................................1
  141.              b.   What is a Virus......................................4
  142.              c.   The Challenge to the Worm............................6
  143.  
  144.         II.  About the FLUSHOT Series
  145.              a.   A Brief History......................................8
  146.              b.   FLU_SHOT+ Features and Enhancements..................9
  147.              c.   Registering FLU_SHOT+................................10
  148.              d.   Site Licensing of FLU_SHOT+..........................10
  149.  
  150.         III. Using FLU_SHOT+
  151.  
  152.              a.   The FLUSHOT.DAT file.................................12
  153.                   1.   Protecting files from Write Access..............13
  154.                   2.   Protecting files from Read Access...............13
  155.                   3.   Excluding files.................................13
  156.                   4.   Checksumming files..............................14
  157.                   5.   Registering a TSR program.......................15
  158.                   6.   Restricted Access...............................15
  159.                   7.   Protecting the FLUSHOT.DAT file.................16
  160.                   8.   Protection Recommendations......................16
  161.                   9.   Allowing "dangerous" programs to run............17
  162.  
  163.              b.   Running FLU_SHOT+....................................18
  164.                   1.   Checksumming the in-memory table................18
  165.                   2.   Intercepting Direct Disk Writes Through INT13...19
  166.                   3.   What about INT26................................19
  167.                   4.   Turning off the header message..................19
  168.                   5.   Disabling Triggering on Open With Write Acces...19
  169.                   6.   Changing the Trigger Window Attributes..........19
  170.                   7.   Allowing trusted TSR's to work..................21
  171.                   8.   Disabling FLU_SHOT+.............................21
  172.                   9.   Disabling FLU_SHOT+ Toggle Display..............22
  173.                  10.   Forcing FLU_SHOT+ to only use the BIOS..........22
  174.                  10.   Defining the "Special" Keys.....................23
  175.                  11.   Putting FLU_SHOT+ to sleep when run.............23
  176.  
  177.         IV.  Interpreting a FLU_SHOT+ Trigger..........................24
  178.  
  179.         V.   How Good is FLUSHOT+, Really?.............................29
  180.  
  181.         VI.  Reward Offered............................................31
  182.  
  183.         VII. Appendix..................................................33
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   Introduction
  203.  
  204.         What is a Trojan?
  205.         =================
  206.  
  207.         Back in the good old days (before there were computers), there
  208.         was this bunch of soldiers who had no chance of beating a
  209.         superior force or of even making it into their fortress.  They
  210.         had this nifty idea:  present the other side with a gift.  Once
  211.         the gift had been accepted, soldiers hiding within the gift would
  212.         sneak out and overtake the enemy from within.
  213.  
  214.         We can only think of the intellectual giants of the day who would
  215.         accept a gift large enough to house enemy soldiers without
  216.         checking its contents.  Obviously, they had little opportunity to
  217.         watch old WWII movies to see the same device used over and over
  218.         again.  They probably wouldn't have appreciated Hogan's Heroes
  219.         anyway.  No color TV's -- or at least not ones with reliable
  220.         reception.
  221.  
  222.         Consider the types of people who would be thrilled at the concept
  223.         of owning their own rough hewn, large wooden horse!  Perhaps they
  224.         wanted to be the first one on their block, or something silly
  225.         like that.
  226.  
  227.         Anyway, you're all aware of the story of The Trojan Horse.
  228.  
  229.         Bringing ourselves a bit closer to the reality we've all grown to
  230.         know and love, there's a modern day equivalent:  getting a gift
  231.         from your BBS or user group which contains a little gem which
  232.         will attack your hard disk, destroying whatever data it contains.
  233.  
  234.         In order to understand how a potentially useful program can cause
  235.         such damage when corrupted by some misguided soul, it's useful to
  236.         understand how your disk works, and how absurdly easy it is to
  237.         cause damage to the data contained thereon.  So, a brief
  238.         technical discussion of the operation of your disk is in order. 
  239.         For those who aren't concerned, turn the page or something.
  240.  
  241.         Data is preserved on a disk in a variety of different physical
  242.         ways having to do with how the data is encoding in the actual
  243.         recording of that data. The actual *structure* of that data,
  244.         however, is the same between MS-DOS machines.  Other operating
  245.         systems have a different structure, but that doesn't concern us
  246.         now.
  247.  
  248.         Each disk has a number of "tracks". These are sometimes called
  249.         cylinders from the old type IBMer's.  These are the same people
  250.         who call hard disks DASDs (Direct Access Storage Devices), so we
  251.         can safely ignore their techno-speak, and just call them tracks. 
  252.         Tracks can be thought of as the individual little grooves on an
  253.         audio record, sort of.
  254.  
  255.         Anyway, each track is subdivided into a number of sectors.  Each
  256.         track has the same number of sectors.  Tracks are numbered, as
  257.  
  258.  
  259.                                         1
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.         are sectors.  Any given area on the disk can be accessed if a
  269.         request is made to read or write data into or out of Track-X,
  270.         Sector Y.  The read or write command is given to the disk
  271.         controller, which is an interface between the computer itself and
  272.         the hard disk.  The controller figures out what commands to send
  273.         to the hard disk,  the hard disk responds and the data is read or
  274.         written as directed.
  275.  
  276.         The first track on the hard disk typically will contain a small
  277.         program which is read from the hard disk and executed when you
  278.         first power up your machine.  The power up sequence is called
  279.         "booting" your machine, and therefore the first track is typical
  280.         known as the "boot track".
  281.  
  282.         In order to read information from your disk in a logical
  283.         sequence, there has to be some sort of index.  An unusual index
  284.         method was selected for MS-DOS.  Imagine going to the card index
  285.         in a library, looking up the title you desire, and getting a
  286.         place in another index which tells you where on the racks where
  287.         the book is stored.  Now, when you read the book, you discover
  288.         that only the first chapter of the book is there.  In order to
  289.         find the next chapter of the book, you have to go back to that
  290.         middle index, which tells you where the next chapter is stored. 
  291.         This process continues until you get to the end of the book. 
  292.         Sounds pretty convoluted, right?  You bet!  However, this is
  293.         pretty much how MS-DOS does its "cataloguing" of files.
  294.  
  295.         The directory structure of MS-DOS allows for you to look up an
  296.         item called the "first cluster".  A cluster represents a set of
  297.         contiguous ("touching or in contact" according to Random House)
  298.         tracks and sectors.  It is the smallest amount of information
  299.         which the file structure of MS-DOS knows how to read or write.
  300.  
  301.         Based on the first cluster number as stored in the directory, the
  302.         first portion of a file can be read.  When the information
  303.         contained therein is exhausted, MS-DOS goes to that secondary
  304.         index for a pointer to the next cluster.  That index is called
  305.         the File Allocation Table, commonly abbreviated to "FAT".  The
  306.         FAT contains an entry for each cluster on the disk.  An FAT entry
  307.         can have a few values: ones which indicate that the cluster is
  308.         unused, another which indicates that the associated cluster has
  309.         been damaged somehow and that it should be marked as a "bad
  310.         cluster", and a pointer to the next cluster for a given file. 
  311.         This allows for what is called a linked list:  once you start
  312.         looking up clusters associated with a given file, each FAT entry
  313.         tells you what the next cluster is.  At the end of the linked
  314.         list is a special indicator which indicates that there are no
  315.         more clusters associated with the file.
  316.  
  317.         There are actually two copies of the FAT stored on your disk, but
  318.         no one really knows what the second copy was intended for. 
  319.         Often, if the first copy of the FAT is corrupted for some reason,
  320.         a clever programmer could recover information from the second
  321.         copy to restore to the primary FAT.  These clever programmers can
  322.         be called "hackers", and should not be confused with the thieves
  323.  
  324.  
  325.                                         2
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.         who break into computer systems and steal things, or the "worms"
  335.         [Joanne Dow gets credit for *that* phrase!] who would get joy out
  336.         of causing you heartache!
  337.  
  338.         But that heartache is exactly what can happen if the directory
  339.         (which contains the pointer to the first cluster a file uses),
  340.         the FAT (which contains that linked list to other areas on the
  341.         disk which the file uses), or other areas of the disk get
  342.         corrupted.
  343.  
  344.         And that's what the little worms who create Trojan programs do: 
  345.         they cause what at first appears to be a useful program to
  346.         eventually corrupt the important parts of your disk.  This can be
  347.         as simple as changing a few bytes of data, or can include wiping
  348.         entire tracks clean.
  349.  
  350.         Not all programs which write to your hard disk are bad ones,
  351.         obviously.  Your word processor, spreadsheet, database and
  352.         utility programs have to write to the hard disk.  Some of the DOS
  353.         programs (such as FORMAT), if used improperly, can also erase
  354.         portions of your hard disk causing you massive amounts of grief. 
  355.         You'd be surprised what damage the simple "DEL" command can do
  356.         with just a simple typo.
  357.  
  358.         But, what defines a Trojan program is its delivery mechanism: the
  359.         fact that you're running something you didn't expect.  Typical
  360.         Trojan programs cause damage to your data, and were designed to
  361.         do so by the worms who writhe in delight at causing this damage. 
  362.         May they rot in hell -- a mind is a terrible thing to waste!
  363.  
  364.         Considering the personality required to cause such damage, you
  365.         can rest assured that they have few friends, and even their
  366.         mother doesn't like to be in the same room with them.  They sit
  367.         back and chortle about the damage they do with a few other lowly
  368.         worms.  This is their entire social universe. You should pity
  369.         them.  I know that I do.
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.                                         3
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   Introduction
  401.  
  402.         What is a Virus?
  403.         ================
  404.  
  405.         Trojan programs are but a delivery mechanism, as stated above. 
  406.         They can be implemented in a clever manner, so that they only
  407.         trigger the malicious part on a certain date, when your disk
  408.         contains certain information or whatever.  However they're coded,
  409.         though, they typically affect the disk only in a destructive
  410.         manner once triggered.
  411.  
  412.         A new breed of programs has the capability of not only reserving
  413.         malicious damage for a given event's occurrence, but of also
  414.         replicating itself as well.
  415.  
  416.         This is what people refer to when they mention the term "Virus
  417.         Program".
  418.  
  419.         Typically, a virus will spread itself by replicating a portion of
  420.         itself onto another program.  Later, when that normally safe
  421.         program is run it will, in part, execute a set of instructions
  422.         which will infect other programs and then potentially, trigger
  423.         the Trojan portion of the program contained within the virus.
  424.  
  425.         The danger of the virus program is twofold. First, it contains a
  426.         Trojan which will cause damage to your hard disk.  The second
  427.         danger is the reason why everyone is busy building bomb shelters. 
  428.         This danger is that the virus program will infect other programs
  429.         and they in turn will infect other programs and so forth.  Since
  430.         it can also infect programs on your floppy disks, you could
  431.         unknowingly infect other machines!  Pretty dangerous stuff,
  432.         alright!
  433.  
  434.         Kenneth van Wyck, one of the computer folks over at Lehigh
  435.         University, first brought a particular virus to the attention of
  436.         the computer community.  This virus infects a program, which
  437.         every MS-DOS computer must have, called COMMAND.COM.  This is the
  438.         Command Line Interpreter and is the interface between your
  439.         keyboard and the MS-DOS operating system itself.  Whatever you
  440.         type at the C> prompt will be interpreted by it.
  441.  
  442.         Well, the virus subverts this intended function, causing the
  443.         infection of neighboring COMMAND.COMs before continuing with
  444.         normal functionality of the command you typed.  After a certain
  445.         number of "infections", the Trojan aspect of the program goes
  446.         off, causing you to lose data.
  447.  
  448.         The programmer was clever.  But still a worm.  And still
  449.         deserving of contempt instead of respect.  Think of what good
  450.         purposes the programmer could have put his or her talents to
  451.         instead of creating this damage.  And consider what this
  452.         programmer must do, in covering up what they've done.  They
  453.         certainly can't tell anyone what they've accomplished. 
  454.         Justifiable homicide comes to mind, but since the worms they must
  455.  
  456.  
  457.                                         4
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.         hang around are probably as disreputable as they are, they must
  467.         hold their little creation a secret.
  468.  
  469.         A pity.  Hopefully, the worm is losing sleep.  Or getting a sore
  470.         neck looking behind them wondering which of their "friends" are
  471.         gonna turn them in for the reward I list towards the end of this
  472.         document.
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.                                         5
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   Introduction
  533.  
  534.         The Challenge to the Worm
  535.         =========================
  536.  
  537.         When I first released a program to try to thwart their demented
  538.         little efforts, I published this letter in the archive (still in
  539.         the FLU_SHOT+ archive of which this is a part of).  What I say in
  540.         it still holds:
  541.  
  542.                     As for the designer of the virus program: most
  543.                     likely an impotent adolescent, incapable of
  544.                     normal social relationships, and attempting to
  545.                     prove their own worth to themselves through
  546.                     these type of terrorist attacks.
  547.  
  548.                     Never succeeding in that task (or in any
  549.                     other), since they have no worth, they will one
  550.                     day take a look at themselves and what they've
  551.                     done in their past, and kill themselves in
  552.                     disgust.  This is a Good Thing, since it saves
  553.                     the taxpayers' money which normally would be
  554.                     wasted on therapy and treatment of this
  555.                     miscreant.
  556.  
  557.                     If they *really* want a challenge, they'll try
  558.                     to destroy *my* hard disk on my BBS, instead of
  559.                     the disk of some innocent person.  I challenge
  560.                     them to upload a virus or other Trojan horse to
  561.                     my BBS that I can't disarm.  It is doubtful the
  562.                     challenge will be taken: the profile of such a
  563.                     person prohibits them from attacking those who
  564.                     can fight back.  Alas, having a go with this 
  565.                     lowlife would be amusing for the five minutes
  566.                     it takes to disarm whatever they invent.
  567.  
  568.                     Go ahead, you good-for-nothing little
  569.                     slimebucket:  make *my* day!
  570.  
  571.  
  572.         Alas, somebody out there opted to do the cowardly thing and to
  573.         use the FLUSHOT programs as a vehicle for wrecking still more
  574.         destruction on people like you.  The FLUSHOT3 program was
  575.         redistributed along with a companion program to aid you in
  576.         reading the documentation.  It was renamed FLUSHOT4.  And the
  577.         reader program was turned into a Trojan itself.
  578.  
  579.         I guess the programmer involved was too cowardly to take me up on
  580.         my offer and prefers to hurt people not capable of fighting back. 
  581.         I should have known that, I suppose, but I don't normally think
  582.         of people who attack innocents. Normally, I think of people to
  583.         respect, not people to pity, certainly not people who must cause
  584.         such damage in order to "get off".
  585.  
  586.         They are below contempt, obviously, and can do little to help
  587.  
  588.  
  589.                                         6
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.         themselves out of the mire they live in.
  599.  
  600.         Still, a worm is a worm.
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.                                         7
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   About FLUSHOT
  665.  
  666.         A Brief History
  667.         ===============
  668.  
  669.         The original incarnation of FLU_SHOT was a quick hack done in my
  670.         spare time.  It had a couple of bugs in it which caused it to
  671.         trigger when it shouldn't, and a few conditions which I had to
  672.         fix.  A strangeness in how COMMAND.COM processed certain
  673.         conditions when I "failed" an operation caused people to lose
  674.         more data than they had intended -- certainly not my intent!
  675.  
  676.         FLU_SHOT was modified and became FLUSHOT2.  It included some
  677.         additional protections, protecting some other important system
  678.         files, and protecting against direct disk writes which can be
  679.         used to circumvent FLUSHOT's protection mechanisms.
  680.  
  681.         Additionally, FLUSHOT2 forced an exit of the program currently
  682.         running instead of a fail condition when you indicated that an
  683.         operation should not be carried out.
  684.  
  685.         FLUSHOT2 was also now distributed in the popular archive format
  686.         (have you remembered to send your shareware check into Phil Katz
  687.         for his efforts?  You really should.  It ain't that much money!).
  688.  
  689.         Next came FLUSHOT3. A bug was fixed which could have caused
  690.         certain weird things when you denied direct disk I/O to certain
  691.         portions of DOS 3.x.
  692.  
  693.         The enhancements to FLUSHOT3 included the ability to enter a 'G'
  694.         when FLUSHOT was triggered.  This allowed FLUSHOT to become
  695.         inactive until an exit was called by the foreground task.  So,
  696.         when you used some trustworthy program which did direct disk I/O,
  697.         you wouldn't be pestered with constant triggering after you enter
  698.         the 'G'.  Primarily this was a quick hack to allow programs such
  699.         as the FORMAT program to run without FLUSHOT being triggered each
  700.         time it tried to do any work it was supposed to.
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.                                         8
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   About FLUSHOT
  731.  
  732.         FLU_SHOT+ Features and Enhancements
  733.         ===================================
  734.  
  735.         This release of FLU_SHOT has a new name: FLU_SHOT+.  Because
  736.         FLUSHOT4 was a Trojan, I opted to change the name.  Besides,
  737.         FLU_SHOT+ is the result of some real effort on my part, instead
  738.         of being a part-time quick hack.  I hope the effort shows.
  739.  
  740.         FLUSHOT is now table driven.  That table is in a file which I
  741.         call FLUSHOT.DAT.  It exists in the root directory on your C:
  742.         drive.  However, I'll advise you later on how to change its
  743.         location so that a worm can't create a Trojan to modify that
  744.         file.
  745.  
  746.         This file now allows you to write and/or read protect entire
  747.         classes of programs.  This means that you can write protect from
  748.         damage all of your *.COM, *.EXE, *.BAT, and *.SYS files.  You can
  749.         read protect all of your *.BAT files so that a nasty program can
  750.         not even determine what name you used for FLU_SHOT+ when you
  751.         invoked it!
  752.  
  753.         Additionally, you can now automatically check programs when you
  754.         first invoke FLU_SHOT+ to determine if they've changed since you
  755.         last looked at them.  Called checksumming, it allows you to know
  756.         immediately if one of the protected programs has been changed
  757.         when you're not looking.  Additionally, this checksumming can
  758.         even take place each time you load the program for execution.
  759.  
  760.         Also, FLU_SHOT+ will advise you when any program "goes TSR".  TSR
  761.         stands for "Terminate and Stay Resident", allowing pop-ups and
  762.         other useful programs to be created.  A worm could create a
  763.         program which leaves a bit of slime behind.  Programs like
  764.         Borland's SideKick program, a wonderful program and certainly not
  765.         a Trojan or virus, is probably the best known TSR.   FLU_SHOT+
  766.         will advise you if any program attempts to go TSR which you
  767.         haven't already registered in your FLUSHOT.DAT file.
  768.  
  769.         Finally, FLU_SHOT+ will also now pop-up a little window in the
  770.         middle of your screen when it gets triggered.  It also will more
  771.         fully explain why it was triggered.  The pop-up window means that
  772.         your screen won't get screwed up beyond recognition -- unless
  773.         you're in graphics mode when it pops up.  Sorry, 'dems the
  774.         breaks!
  775.  
  776.         This version, FLU_SHOT+, Version 1.5 has some other substantial
  777.         improvements on the security side, has a couple of bug fixes here
  778.         and there and is generally the same program - just a little more
  779.         reliable, and a little more user friendly.  And, more closely
  780.         attuned to what you, the user community, have asked me for.
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.                                         9
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   About FLUSHOT
  797.  
  798.         Registering FLU_SHOT+
  799.         =====================
  800.  
  801.         FLU_SHOT+ is not a free program.  You're encouraged to use it, to
  802.         distribute it to your friends and co-workers.  If you end up not
  803.         using it for some reason, let me know why and I'll see if I can
  804.         do something about it in the next release.
  805.  
  806.         But, the right to use FLU_SHOT+ is contingent upon you paying for
  807.         the right to use it.  I ask for ten dollars as a registration
  808.         fee, plus four dollars to meet my costs for shipping, handling,
  809.         and processing each order.  This entitles you to get informed
  810.         when the next update is available, and to have someone available
  811.         to help support you with any problem you might have with the
  812.         program.  And it allows you to pay me, in part, for my labor in
  813.         creating the entire FLU_SHOT series.  I don't expect to get my
  814.         normal consulting rate or to get a return equal to that of other
  815.         programs which I've developed and sell through more traditional
  816.         channels.  That's not my intent, or I would have made FLU_SHOT+ a
  817.         commercial program and you'd be paying lots more money for it.
  818.  
  819.         Some people are uncomfortable with the shareware concept, or
  820.         believe that there ain't no such thing as Trojan or Virus
  821.         programs, and that a person who profits from the distribution of
  822.         a program such as FLU_SHOT must be in it for the money.  Although
  823.         I sympathize with their feelings, I feel that a user of FLU_SHOT
  824.         simply *must* pay for their usage of the program -- using it for
  825.         free is paramount to stealing, and we know how wrong that is!
  826.  
  827.         I've created an alternative for these folks.  I'll call it
  828.         "charityware" [first called that, to my knowledge, by Roedy
  829.         Green].  You can also register FLU_SHOT+ by sending me a check
  830.         for $10 made out to your favorite charity. And a check made out
  831.         to me for $4 to handle my costs.  Be sure to include a stamped
  832.         and addressed envelope.  I'll forward the monies onto them and
  833.         register you fully.
  834.  
  835.         Of course, if you wish, you can send me a check for more than
  836.         $14.  I'll cash it gladly (I'm no fool!).
  837.  
  838.  
  839.         Site Licensing of FLU_SHOT+
  840.         ===========================
  841.  
  842.         So, you run the computer department of a big corporation, you got
  843.         a copy of FLU_SHOT+, decided it was wonderful and that it  did
  844.         everything you wanted and sent in your ten bucks.  Then you
  845.         distributed it to your 1000 users.
  846.  
  847.         Not what is intended by the shareware scheme.  *Each* site using
  848.         FLU_SHOT+ should be registered.  That's ten bucks a site, me
  849.         bucko!  Again, make the check out to charity if you're
  850.         uncomfortable with the idea of a programmer actually deriving an
  851.  
  852.  
  853.                                        10
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.         income from their work.
  863.  
  864.         However, if you've really got 1000 computers, you should give me
  865.         a call.  As much as I'd like to get $10 for each site, that
  866.         wouldn't be fair to you.  So, quantity discounts are available.
  867.  
  868.         Here's out quantity discount schedule.  Remember to add in the
  869.         four dollar charge for each order.
  870.  
  871.                   Quantity            Price Each
  872.                ==============       ===============
  873.                 1 -  49                $10
  874.                50 - 249                $ 9
  875.               250 - 499                $ 7
  876.               500+                     $ 6
  877.               10,000+                No Charge
  878.  
  879.         Site licensee's get a "gold" disk, and make their own copies at
  880.         their site, working on the honor system.  Each site license does
  881.         require a separate agreement, so be sure to give us a call to
  882.         work out the details.
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.                                        11
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                  Using FLU_SHOT+
  929.  
  930.         The FLUSHOT.DAT file
  931.         ====================
  932.  
  933.         FLU_SHOT+ is table driven by the contents of the FLUSHOT.DAT
  934.         file.  This file normally exists in the root directory of your C:
  935.         drive (C:\FLUSHOT.DAT).
  936.  
  937.         A little later in this document you'll see how to disguise the
  938.         data file name, making life tougher for the worms out there.  But
  939.         for the purposes of this document, we'll assume that the file is
  940.         called C:\FLUSHOT.DAT.
  941.  
  942.         The FLU_SHOT+ program will read this data file exactly once. It
  943.         reads the data from the data file into memory and overwrites the
  944.         name of the data file in so doing.  A little extra protection in
  945.         hiding the name of the file.
  946.  
  947.         This data file contains a number of lines of text.  Each line of
  948.         text is of the form:
  949.  
  950.         <Command>=<filename><options>
  951.  
  952.         Command can be any one of the following characters:
  953.  
  954.              P    -    Write Protect the file named
  955.              R    -    Read Protect the file named
  956.              E    -    Exclude the file named from matching P or R lines
  957.              T    -    The named file is a legitimate TSR
  958.              C    -    Perform checksum operations on the file named
  959.  
  960.         The  filename can be an ambiguous file if you wish for all
  961.         commands except the 'T' and 'C' commands.  This means that:
  962.  
  963.              C:\level1\*.COM
  964.  
  965.         will specify all COM files on your C: drive in the level1
  966.         directory (or its sub-directories). Specifying:
  967.  
  968.              C:\level1\*\*.EXE
  969.  
  970.         would specify all EXE files in subdirectories under the C:\level1
  971.         directory, but would not include that directory itself.
  972.  
  973.         You can also use the '?' operator to specify ambiguous characters
  974.         as in:
  975.  
  976.              ?:\usr\bin\?.COM
  977.  
  978.         would be used to specify files on any drive in the \usr\bin
  979.         directory on that drive.  The files would have to be single
  980.         letter filenames with the extension of 'COM'.
  981.  
  982.         Ambiguous file names are not allowed for the 'T' and 'C' options.
  983.  
  984.  
  985.                                        12
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.                                  Using FLU_SHOT+
  997.  
  998.         Protecting files from Write Access
  999.         ==================================
  1000.  
  1001.         Use the 'P=' option to protect files from write access.  To
  1002.         disallow writes to any of your COM, EXE, SYS, and BAT files,
  1003.         specify lines of the form:
  1004.  
  1005.              P=*.COM
  1006.              P=*.EXE
  1007.              P=*.SYS
  1008.              P=*.BAT
  1009.  
  1010.         which protects these files on any disk, in any directory.
  1011.  
  1012.         Protecting files from Read Access
  1013.         =================================
  1014.  
  1015.         Similarly, you can use the 'R' command to protect files from
  1016.         being read by a program (including the ability to 'TYPE' a
  1017.         file!).  To prevent read access to all of your BAT files, use a
  1018.         line such as:
  1019.  
  1020.              R=*.BAT
  1021.  
  1022.         Combinations of R and P lines are allowed, so the combination of
  1023.         the above lines would prevent read or write access to all batch
  1024.         files.
  1025.  
  1026.         Excluding files
  1027.         ===============
  1028.  
  1029.         Programmers in particular should find usage for the 'E' command. 
  1030.         This allows you to exclude matching filenames from other match
  1031.         operations.  Assume you're doing development work in the
  1032.         C:\develop directory.
  1033.  
  1034.         You could exclude FLU_SHOT+ from being triggered by including a
  1035.         line such as:
  1036.  
  1037.              E=C:\develop\*.*
  1038.  
  1039.         Of course, you might have development work on many disks under a
  1040.         directory of that name.  If you do, you might include a line
  1041.         which looks like:
  1042.  
  1043.              E=?:\develop\*.*
  1044.                   or
  1045.              E=*\develop*
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.                                        13
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.         Checksumming files
  1062.         ==================
  1063.  
  1064.         This line is a little more complicated than others and involves
  1065.         some setup work.  It's worth it though!
  1066.  
  1067.         A checksum is a method used to reduce a files validity into a
  1068.         single number.  Adding up the values of the bytes which make up
  1069.         the file would be a simple checksum method.  Doing more complex
  1070.         mathematics allows for more and more checking information to be
  1071.         included in a test.
  1072.  
  1073.         If you use a lie on the form:
  1074.  
  1075.              C=C:\COMMAND.COM[12345]
  1076.  
  1077.         then when FLU_SHOT+ first loads it will check the validity of the
  1078.         file against the number in the square brackets.  If the checksum
  1079.         calculated does not match the number presented, you'll be advised
  1080.         with a triggering of FLUSHOT, which presents the correct
  1081.         checksum.
  1082.  
  1083.         When you first set up your FLUSHOT.DAT file, use a dummy number
  1084.         such as '12345' for each of the files you wish to checksum. 
  1085.         Then, when you run FLUSHOT, you should copy down the "erroneous"
  1086.         checksum presented.  Then, edit the FLUSHOT.DAT file and replace
  1087.         the dummy number with the actual checksum value you had copied
  1088.         down. Voila! If even one byte in the is changed, you'll be
  1089.         advised the next time you run FLU_SHOT+.
  1090.  
  1091.         But wait! There's more! Not available in stores!
  1092.  
  1093.         Sorry.  I got carried away.
  1094.  
  1095.         Seriously, there is more.  When a "checksummed" file is loaded by
  1096.         MS-DOS, it will, by default, be checksummed again.  So, if you
  1097.         had a line such as:
  1098.  
  1099.              C=C:\usr\bin\WS.COM[12345]
  1100.  
  1101.         the venerable old WordStar program (still *my* editor of choice!)
  1102.         would be checksummed each time you went to edit a file.
  1103.  
  1104.         Of course, you might not want the overhead of that checksumming
  1105.         to take place each time you load a program.  Therefore, a few
  1106.         switches have been added.  The switches are place immediately
  1107.         after the ']' in the checksum line:
  1108.  
  1109.              C=C:\usr\bin\WS.COM[12345]<switch>
  1110.  
  1111.         These switches are:
  1112.  
  1113.              ,n   -    will only checksum the file only 'n' times. Only
  1114.                        one digit allowed.
  1115.  
  1116.  
  1117.                                        14
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.              -    -    Only checksum this file when FLU_SHOT+ first
  1128.                        loads.  ',1' and '-' are equivalent.
  1129.  
  1130.              +    -    Only checksum this file when it is loaded and
  1131.                        executed, not when FLU_SHOT+ first loads
  1132.  
  1133.         Therefore, if you wished to only check your WS.COM file when you
  1134.         first loaded the FLU_SHOT+ program, you'd specify a line as:
  1135.  
  1136.              C=C:\usr\bin\ws.com[12345],1
  1137.                   or
  1138.              C=C:\usr\bin\ws.com[12345]-
  1139.  
  1140.         If you wished to checksum your program called "MY_PROG.EXE" only
  1141.         when it was used, try:
  1142.  
  1143.              C=C:\path\MY_PROG.EXE+
  1144.  
  1145.  
  1146.         Registering a TSR program
  1147.         =========================
  1148.  
  1149.         Any unregistered TSR program which is run after FLU_SHOT+ will
  1150.         cause a trigger when they "go TSR".  You can register a program
  1151.         so no trigger goes off by specifying it in a line such as:
  1152.  
  1153.              T=C:\usr\bin\tsr_s\sk.com
  1154.  
  1155.         which will keep FLU_SHOT+ from complaining about sk.com.  Make
  1156.         sure to take a look at the '-T' option, specified in the next
  1157.         section.
  1158.  
  1159.         Restricted Access
  1160.         =================
  1161.  
  1162.         Normally, when access to a file causes FLU_SHOT+ to trigger, the
  1163.         user is given the option of hitting a 'Y' to allow the access, or
  1164.         a 'G' to allow the access until program exit or a key is hit. 
  1165.         However, in some cases, access to a file should *never* be
  1166.         allowed.  If you end a line in your FLUSHOT.DAT file with an '!',
  1167.         then the trigger will indicate that this is a restricted access
  1168.         file, and the user will be asked to press a key to continue.  In
  1169.         any case, trigger accesses resulting from a line with a '!' at
  1170.         the end will not be allowed to go forth.  For example, if you
  1171.         never want anyone to be able to read an AUTOEXEC.BAT file on any
  1172.         of your disks, have a line of the form:
  1173.  
  1174.                   R=*AUTOEXEC.BAT!
  1175.  
  1176.         in your FLUSHOT.DAT file.  That's pretty easy!  (Make sure,
  1177.         however, to take a look at the FSP command line arguments for the
  1178.         '--' switch.)
  1179.  
  1180.  
  1181.  
  1182.  
  1183.                                        15
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.         Protecting the FLUSHOT.DAT file
  1193.         ===============================
  1194.  
  1195.         Obviously, the weak link in the chain of the protection which
  1196.         FLU_SHOT+ offers you is the FLUSHOT.DAT file.
  1197.  
  1198.         You would think that you'd want to protect the FLUSHOT.DAT file
  1199.         from reads and writes as specified above.  However this, too,
  1200.         leaves a gaping security hole: memory could be searched for it,
  1201.         and it could be located that way.  A better alternative exists. 
  1202.         In the distribution package for FLUSHOT+ exists a program called
  1203.         FLU_POKE.COM.  This program allows you to specify the new name
  1204.         you wish to call the FLUSHOT.DAT file. Simply type:
  1205.  
  1206.              FLU_POKE <flushot_name>
  1207.  
  1208.         where <flushot_name> represents the full path filename of your
  1209.         copy of FLU_SHOT+.
  1210.  
  1211.         You'll be prompted for the name of the FLUSHOT.DAT file.  Enter
  1212.         the name you've selected (remember to specify the disk and
  1213.         directory as part of the name).  Voila!  Nothing could be easier.
  1214.  
  1215.         Here's an example, assuming that you've already named your
  1216.         FLUSHOT.DAT to FRED.TXT, and it resides in the C:\DOC directory. 
  1217.         Assume that FSP.COM is in the current directory and has been
  1218.         renamed to MYFILE.COM.  Here's the command line:
  1219.  
  1220.              FLU_POKE MYFILE.COM
  1221.              File opened ok...
  1222.  
  1223.              Enter the FLUSHOT.DAT filename (full pathname): FRED.TXT
  1224.  
  1225.  
  1226.         Protection Recommendations
  1227.         ==========================
  1228.  
  1229.         Here's a sample FLUSHOT.DAT file, basically the same one included
  1230.         in the archive.  Your actual checksums will differ, and you may
  1231.         want to modify what files and directories are protected.
  1232.         Obviously, your exact needs are different than mine, so consider
  1233.         this a generic FLUSHOT.DAT:
  1234.  
  1235.         P=*.bat
  1236.         P=*.sys
  1237.         P=*.exe
  1238.         P=*.com
  1239.         R=*AUTOEXEC.BAT
  1240.         R=*CONFIG.SYS
  1241.         E=?\dev\*
  1242.         C=C:\COMMAND.COM[12345]-
  1243.         C=C:\IBMBIO.COM[12345]-
  1244.         C=C:\IBMDOS.COM[12345]-
  1245.  
  1246.  
  1247.  
  1248.  
  1249.                                        16
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.         Allowing "dangerous" programs to run
  1259.         ====================================
  1260.         In some cases, though, you'll still want the ability to let
  1261.         "trusted" programs to run -- even if they are potentially
  1262.         dangerous.  A good example of this is the DOS FORMAT program: 
  1263.         here is a program specifically designed to overwrite the data on
  1264.         your disk in such a way that it would be difficult, at best, to
  1265.         recover.  Yet, the program is a necessary part of your day-to-day
  1266.         computer usage.
  1267.  
  1268.         Therefore, the 'X=' switch has been added in to allow a program
  1269.         such as FORMAT to run without interruption.  THIS IS A POTENTIAL
  1270.         SECURITY HOLE.  To prevent an 'X=' program from being corrupted,
  1271.         I suggest you also include any 'X=' program as both a 'C=' and a
  1272.         'P=' program as well: any writes to the file would cause FLU_SHOT
  1273.         to trigger, and you wouldn't be able to run a modified program
  1274.         without first giving FLU_SHOT permission.  Use 'X=' sparingly. 
  1275.         I'm rather uncomfortable with it myself.
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.                                        17
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.                                Invoking FLU_SHOT+
  1325.  
  1326.         Running FLUSHOT+
  1327.         ================
  1328.  
  1329.         For extra protection, after you've run FLU_POKE, you should
  1330.         rename the FLU_SHOT+ program is something unique and meaningful
  1331.         to you, but not a worm.
  1332.  
  1333.         Assuming you didn't rename it, however, you could invoke the
  1334.         program simply by typing:
  1335.  
  1336.              FSP
  1337.  
  1338.         when at the prompt.  That's all there is to it.  When you're
  1339.         satisfied, you can add it to your AUTOEXEC.BAT file, after all of
  1340.         your trusted programs have run.
  1341.  
  1342.         But there are some options you should know about:
  1343.  
  1344.         Checksumming the in-memory table
  1345.         ================================
  1346.         Since the wily worm may well be able to thwart some of the
  1347.         efforts of FLU_SHOT+ by playing nasty games with the in-memory
  1348.         copy of the FLUSHOT.DAT file, FLU_SHOT+ will also check this
  1349.         table against a checksum it generates on a regular basis.  If the
  1350.         table gets corrupted, you'll be advised of it.  This table is
  1351.         checked with each call to DOS, so the table must be in good shape
  1352.         before any disk I/O is done.
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.                                        18
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.         Intercepting Direct Disk Writes Through INT13
  1391.         =============================================
  1392.  
  1393.         The default operation of FLU_SHOT+ is to intercept and examine
  1394.         every call to the direct disk routines.  You can *disable* this
  1395.         by including the '-F' switch on your command line:
  1396.  
  1397.              FSP -F
  1398.  
  1399.         This is not recommended, but exists primarily for developers who
  1400.         can't use the constant triggering one of their programs may
  1401.         cause.
  1402.  
  1403.  
  1404.         What about INT26
  1405.         ================
  1406.         Similarly, the same exists for the direct writes which normally
  1407.         are only made by DOS through interrupt 26.  Again, I do not
  1408.         recommend you disable the checking, but if you desire to do so,
  1409.         use the '-D' switch.
  1410.  
  1411.         Turning off the header message
  1412.         ==============================
  1413.         If you've no desire to see the rather lengthy welcome message 
  1414.         which is displayed when you first use FLU_SHOT+, use the '-h'
  1415.         switch.
  1416.  
  1417.         Disabling Triggering on Open with Write Access
  1418.         ==============================================
  1419.         Files which are opened with write access allowed are often not
  1420.         ever written to.  For example, a COPY A.COM B.COM will open
  1421.         *both* files for write access, although DOS will not actually
  1422.         write to the A.COM file.  Programmer laziness is the most likely
  1423.         excuse, and I'm as guilty of it as anyone else.  However, this
  1424.         can cause some false alarms, which can alarm you!  If you specify
  1425.         the '-W' switch on your command line, you won't have this
  1426.         particular alert come up.
  1427.  
  1428.         Since the actual write operation to this file is also protected
  1429.         by FLU_SHOT+, there is no real danger with using the '-W' option
  1430.         -- except that a "protected" file could be created anew without
  1431.         you being triggered.  That's not too big a deal.  Future versions
  1432.         of FLU_SHOT+ will most probably have the '-W' option as the
  1433.         default operation.
  1434.  
  1435.  
  1436.         Changing the Trigger Window Attributes
  1437.         ======================================
  1438.         Certain displays, particularly monochrome displays which try to
  1439.         emulate color displays, have a problem with the default selection
  1440.         of attributed in the trigger window of FLU_SHOT+.  If you use the
  1441.         '-Axcx:yy' switch, you can modify these attributes.
  1442.  
  1443.         The xx:yy represent the hex values (as selected from the table
  1444.         below) for the interior and the perimeter of the trigger window. 
  1445.  
  1446.  
  1447.                                        19
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.         The 'xx' represents the interior attribute, the 'yy', the
  1457.         perimeter.  If you use the '-A' switch, you *must* select both of
  1458.         these values - failure to do so may give a rather strange
  1459.         display.
  1460.  
  1461.         What follows is a table of color and characteristics associated
  1462.         with the attribute byte.  A byte has eight bits. Counting from
  1463.         the leftmost bit, the first bit of the attribute byte, if set,
  1464.         will cause the character to blink, regardless of other settings. 
  1465.         The next three bits represent the background color for a given
  1466.         character position.  The next bit indicates whether a character
  1467.         should have high intensity turned on.  Finally, the last three
  1468.         bits represent the color of the character itself.  To create the
  1469.         color of your choice, simply combine the bits, then calculate
  1470.         what they are in hexadecimal.  If you're not sure of how to
  1471.         create a hexadecimal representation of a binary number, have no
  1472.         fear:  that information follows, too.
  1473.  
  1474.                                     Bkgrnd    Frgrnd
  1475.                                  B   CLR   I   CLR
  1476.                                  [] [][][] [] [][][]
  1477.                     Brightness----^  | | |  |  | | |
  1478.                     Background-------+-+-+  |  | | |
  1479.                     Intensity---------------+  | | |
  1480.                     Foreground-----------------+-+-+
  1481.  
  1482.                                               Value in hex
  1483.         Bit Pattern    Value      Color       if B or I set
  1484.         ====================================================
  1485.           0  0  0      0         Black            8
  1486.           0  0  1      1         Blue             9
  1487.           0  1  0      2         Green            a
  1488.           0  1  1      3         Cyan             b
  1489.           1  0  0      4         Red              c
  1490.           1  0  1      5         Magenta          d
  1491.           1  1  0      6         Yellow           e
  1492.           1  1  1      7         White            f
  1493.  
  1494.         For example, to create an attribute byte that is high intensity,
  1495.         blinking yellow characters on a green background, the attribute
  1496.         byte would be:
  1497.  
  1498.                                     Bkgrnd    Frgrnd
  1499.                                  B   CLR   I   CLR
  1500.                                  1  0 1 0  1  1 1 0
  1501.                                 \--------/ \-------/
  1502.                                     |          |
  1503.                                     A          E
  1504.                     Attribute char:     AE
  1505.  
  1506.         IMPORTANT: If the value is less than 10 (hex), you *must* include
  1507.         a leading zero or strange things will happen to the selected
  1508.         value.
  1509.  
  1510.  
  1511.  
  1512.  
  1513.                                        20
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.         Allowing Trusted TSR's to Work
  1524.         ==============================
  1525.         Normally, you'd load all of your trusted TSR's before FLUSHOT+ is
  1526.         loaded from within your AUTOEXEC.BAT file.  However, you might
  1527.         want to use SideKick once in a while, removing it from memory as
  1528.         you desire.  This could cause some problems, since SideKick, and
  1529.         programs like it, take over certain interrupts, and FLU_SHOT+
  1530.         could get confused about whether this is a valid call or a call
  1531.         that shouldn't be allowed.  Normally, FLU_SHOT+ will trigger on
  1532.         these calls, which is safer, but can be annoying.  If you use the
  1533.         special '-T' switch upon program invocation, then calls which
  1534.         trusted TSR's (those specified with the 'T=' command in your
  1535.         FLUSHOT.DAT file) make will be allowed.  Understand, please, that
  1536.         this basically means that calls made by a Trojan while a trusted
  1537.         TSR is loaded may not be caught.  Please, use this switch with
  1538.         caution!
  1539.  
  1540.         Disabling FLU_SHOT+
  1541.         ===================
  1542.         There may be times when you're about to do some work which you
  1543.         know will trigger FLU_SHOT+.  And you might not want to be
  1544.         bothered with all of the triggering, the pop-up windows and your
  1545.         need to respond to each trigger.  If you look in the upper right
  1546.         hand corner of your screen, you'll see a '+' sign.  This
  1547.         indicates that FLU_SHOT+ is monitoring and attempting to protect
  1548.         your system.  Depress the ALT key three times.  Notice that the
  1549.         '+' sign' turned into a '-'?  Well, FLU_SHOT+ is now disabled,
  1550.         and will not trigger on any event.  If you depress the ALT key
  1551.         three more times, you'll see the '-' turn back into a '+' -- each
  1552.         time you depress the ALT key three times, FLU_SHOT+ will toggle
  1553.         between being enabled and disabled.
  1554.  
  1555.         Disabling the Disabling of FLU_SHOT+
  1556.         ====================================
  1557.         Yes, I know about the poor grammar used in the heading, but I
  1558.         couldn't think of a better way of expressing it.
  1559.  
  1560.         You can cause FLU_SHOT+ to ignore the "strike ALT three times"
  1561.         function discussed above.  If you'd rather that the people using
  1562.         the machine FLU_SHOT is working on *not* be able to disable it,
  1563.         then enter the '--' switch on the command line, as in:
  1564.  
  1565.               FSP --
  1566.  
  1567.         this is important when used in combination with the '!'
  1568.         restricted file access option you may have opted to use in your
  1569.         FLUSHOT.DAT file.
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.                                        21
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.         Disabling FLU_SHOT+ Toggle Display
  1589.         ==================================
  1590.         Alas, there are graphics applications which will be screwed up be
  1591.         the '-' or '+' in the upper right hand corner of your display.
  1592.         Therefore, if you depress the CTRL key three times, you'll be
  1593.         able to toggle the display capability of FLU_SHOT+.  The default
  1594.         configuration of FLU_SHOT+ is to "come up" with display turned
  1595.         on.  You can reverse this capability if you include the '-G' (for
  1596.         graphics) switch on your command line when you run FLU_SHOT+.
  1597.  
  1598.         When you toggle this function, the '-' or the '+' won't appear or
  1599.         disappear immediately.  Simply that the repainting of them will
  1600.         no longer take place.
  1601.  
  1602.         Defining Your Own "Special Keys"
  1603.         ================================
  1604.         If you would like to, you can define your own "special keys" (as
  1605.         in the default Alt and Ctrl keys in a similar way as you define
  1606.         your attributes above.  Use the '-Kxx:yy' option, which takes the
  1607.         hexadecimal scan code value for the replacement Alt key as the
  1608.         first argument (the 'xx') and the hexadecimal scan code value for
  1609.         the replacement Ctrl key value.  If you're not sure of what your
  1610.         scan codes are, you should look them up in your BIOS tech ref
  1611.         manual -- or there are a multitude of programs which will print
  1612.         out the scan code for a given key. Most of these programs are
  1613.         available on BBS's throughout the world, including the Software
  1614.         Concepts Design, RamNet BBS at (212)-89-6438.
  1615.  
  1616.         Due to extreme programmer fatigue, the "Welcome" message you see
  1617.         when you first run FLU_SHOT+ with the '-K' option will not change
  1618.         to reflect your selection.  Maybe in the next version.  And, of
  1619.         course, it depends upon how much you, the end-user want such an
  1620.         option.
  1621.  
  1622.         IMPORTANT: If the value is less than 10 (hex), you *must* include
  1623.         a leading zero or strange things will happen to the selected
  1624.         value.
  1625.  
  1626.         Forcing FLU_SHOT+ to only use the BIOS
  1627.         ======================================
  1628.  
  1629.         Certain machines are not totally compatible with the IBM BIOS,
  1630.         which is the BIOS for which FLU_SHOT+ was written.  Because
  1631.         FLU_SHOT has to be able to deal with the hardware in a pretty
  1632.         direct manner in order to "pop-up" a screen, these machines were
  1633.         not able to use FLU_SHOT.  If you specify the '-B' switch in your
  1634.         command line when you first run FLU_SHOT+, then only the BIOS
  1635.         will be used for screen output.  This is *drastically* slower
  1636.         than direct screen memory writes (the method used unless you
  1637.         specify to use the BIOS), but at least it works.  However, the
  1638.         "hit ALT and/or CTRL three times" options may not work in these
  1639.         machines - only your experimentation will tell.
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.                                        22
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.         Putting FLU_SHOT+ to Sleep When Its First Run
  1655.         ==============================================
  1656.         One of the idiosyncrasies of DOS is how a batch file is
  1657.         processed.  Basically, DOS opens the batch file, reads the next
  1658.         command, closes the batch file, executes the command, and then
  1659.         starts over again until the batch file is exhausted of commands.
  1660.  
  1661.         This would, normally, not be a problem, but can become when you
  1662.         opt to place the FLU_SHOT command line in your AUTOEXEC.BAT file
  1663.         *and* you've opted to Read Protect (with the 'R=' option) the
  1664.         AUTOEXEC file itself:  you'll be advised that some program is
  1665.         reading this protected file.  Not a big deal, really, but
  1666.         certainly a hassle when you fist boot up your system.  Therefore,
  1667.         protections within FLU_SHOT are not turned on a certain amount of
  1668.         time.  The default is set to ten seconds, or until you enter a
  1669.         key.  You can modify the default "sleep" time by entering a '-Sn'
  1670.         option on the command line, where 'n' represents the number of
  1671.         eighteenths of a second (1/18) you wish to have FLU_SHOT+ sleep
  1672.         before becoming active.  Since you will most likely have
  1673.         FLU_SHOT+ as one of the final commands in your AUTOEXEC.BAT, you
  1674.         probably won't have to modify this parameter, but the capability
  1675.         exists, nonetheless.
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.                                        23
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.         Interpreting a FLU_SHOT+ Trigger
  1721.         ================================
  1722.  
  1723.         So, you've run FLU_SHOT+, and you're at your C> prompt. Great! 
  1724.         Now stick a blank disk which you don't care about into your A:
  1725.         drive and try to format it.
  1726.  
  1727.         Surprise!  FLU_SHOT+ caught the attempt!  You have three choices
  1728.         now:  typing 'Y' allows the operation to continue, but the next
  1729.         one will be caught as well.  Typing a 'G' (for Go!) allows the
  1730.         operation to continue, disabling FLU_SHOT+ until an exit from the
  1731.         program is made. When FLU_SHOT+ is in the 'G' state, a 'G' will
  1732.         appear in the upper right hand corner of your screen.
  1733.  
  1734.         Any other key will cause a failure of the operation to occur.
  1735.  
  1736.         When you've got FLU_SHOT+ running and you get signaled that there
  1737.         is a problem, you should think about what might have caused the
  1738.         problem.  Some programs, like FORMAT, or the Norton Utilities or
  1739.         PC-Tools, or DREP have very good reasons for doing direct reads
  1740.         and writes to your hard disk.  However, a public domain checkbook
  1741.         accounting program doesn't.  You'll have to be the judge of what
  1742.         are legitimate operations and which are questionable.
  1743.  
  1744.         There is no reason to write to IBMBIO or IBMDOS, right?
  1745.  
  1746.         Wrong!
  1747.  
  1748.         When you format a disk with the '/S' option, those files are
  1749.         created on the target diskette.  The act of creating, opening up
  1750.         and writing those files will trigger FLU_SHOT+ as part of its
  1751.         expected operation. There are many other legitimate operations
  1752.         which may cause FLU_SHOT+ to trigger.
  1753.  
  1754.         So will copying a COM or EXE file if you have those protected
  1755.         with a 'P=' command.  FLU_SHOT+ is not particularly intelligent
  1756.         about what is allowed and what isn't.  That's where you, the
  1757.         pilot, get to decide.
  1758.  
  1759.         Here's a fuller listing of the messages which you might see when
  1760.         you're using FLU_SHOT+:
  1761.  
  1762.  
  1763.         Checking ===><filename>
  1764.  
  1765.         This message is displayed as FLU_SHOT+ checks the checksum on all
  1766.         of the "C=" files when you first invoke FLU_SHOT+.  The files
  1767.         must be read in from disk, their checksum calculated and then
  1768.         compared against the value you claim the checksum should equal.
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.                                        24
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.         If the checksum does *not* equal what you claim it should (which
  1787.         means that the file may have been written to and might therefore
  1788.         be suspect), a window will pop up in the middle of your screen:
  1789.  
  1790.         +===============================================================+
  1791.         |  Bad Checksum on <filename>                                   |
  1792.         |  Actual Checksum is: <checksum>                               |
  1793.         |Press "Y" to allow, "G" to go till exit, any other key to exit.|
  1794.         +===============================================================+
  1795.  
  1796.         This message simultaneously advises you there is a problem with
  1797.         the checksums not matching, shows you what the checksum should be
  1798.         and then awaits your response.
  1799.  
  1800.         Except for the initial run of FLU_SHOT+, if you type a 'Y' or a
  1801.         'G', then the program will load and execute.  Typing any other
  1802.         key will cause the program to abort and for you to be returned to
  1803.         the C> prompt.  When FLU_SHOT+ is in the 'G' state, a 'G' will
  1804.         appear in the upper right hand corner of your screen.
  1805.  
  1806.         If this is the initial run of FLU_SHOT+, however, you'll be
  1807.         advised of the program's actual checksum, but FLU_SHOT+ will
  1808.         continue to run, checking all remaining "C=" files in the
  1809.         FLUSHOT.DAT file.
  1810.  
  1811.  
  1812.  
  1813.         If you're running a program and you see a screen like:
  1814.  
  1815.         +===============================================================+
  1816.         |  ? WARNING! TSR Request from an unregistered program!         |
  1817.         |Number of paragraphs of memory requested (in decimal) are:<cnt>|  
  1818.         |                   (Press any key to continue)                 |
  1819.         +===============================================================+
  1820.  
  1821.         you're being advised that a program is about to go TSR.  If this
  1822.         is a program you trust (such as SideKick, of KBHIT, or a host of
  1823.         other TSR programs you've grown to know and love), then you
  1824.         should considering installing a "T=" line in the FLUSHOT.DAT file
  1825.         so that future runs of this program will not trigger FLU_SHOT+.
  1826.  
  1827.         However, if you get this message when running a program you don't
  1828.         think has any need to go TSR (such as the proverbial checkbook
  1829.         balancing program), you should be a little suspicious.  Having a
  1830.         TSR program is not, in of and of itself, something to be
  1831.         suspicious of.   But having one you don't expect --- well, that's
  1832.         a different story.
  1833.  
  1834.         Most TSR's "hook into" an interrupt vector before they go TSR. 
  1835.         These hooks might intercept and process key strokes ("hotkeys"),
  1836.         or they might hook and intercept direct disk writes themselves. 
  1837.         In any event, FLU_SHOT+ (in this version!) doesn't have the
  1838.         smarts to do more than advise you of the TSR'ing of the program. 
  1839.         If you're truly suspicious, reboot your machine immediately!
  1840.  
  1841.  
  1842.  
  1843.                                        25
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.         If a program attempts to write directly to the interrupts which
  1853.         are reserved for disk writes, FLU_SHOT+ will also be triggered
  1854.         and you'll see something like:
  1855.  
  1856.         +===============================================================+
  1857.         |====>Direct Disk Write attempt by program other than DOS! <====|
  1858.         |                   (From Interrupt <xx>)                       |
  1859.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1860.         +===============================================================+
  1861.  
  1862.         where the <xx> represents either a 13 (indicating a direct BIOS
  1863.         write to the disk) or a 26 (indicating a direct DOS write). 
  1864.         Again, pressing a 'Y' or a 'G' allows the operation to continue,
  1865.         pressing any other key will cause the operation to return a
  1866.         failed status to DOS, and the operation will not take place. When
  1867.         FLU_SHOT+ is in the 'G' state, a 'G' will appear in the upper
  1868.         right hand corner of your screen.
  1869.  
  1870.         If an attempt is made to format your disk, which may be a
  1871.         legitimate operation made by the DOS FORMAT program, you'll see a
  1872.         message such as:
  1873.  
  1874.         +===============================================================+
  1875.         |          ====>Disk being formatted! Are You Sure?<====        |
  1876.         |                                                               |
  1877.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1878.         +===============================================================+
  1879.  
  1880.         which follows similarly to the direct disk write operations. You
  1881.         should question whether the format operation is appropriate at
  1882.         the time and take whatever action you think is best.
  1883.  
  1884.         If one of your protected files is about to be written to, you'll
  1885.         see a message like:
  1886.  
  1887.         +===============================================================+
  1888.         |Write access being attempted on:                               |
  1889.         | <filename>                                                    |
  1890.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1891.         +===============================================================+
  1892.  
  1893.         where <filename> represents the file you're trying to protect
  1894.         from these write operations.  Your red flag should fly, and you
  1895.         should question why the program currently running should cause
  1896.         such an operation.
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.                                        26
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.         You may also see the same type of message when one of your "Read-
  1919.         Protected" files is being accessed:
  1920.  
  1921.         +===============================================================+
  1922.         |Read Access being attempted on:                                |
  1923.         | <filename>                                                    |
  1924.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1925.         +===============================================================+
  1926.  
  1927.         Again, the same red flag should fly, but it doesn't mean that
  1928.         you're infected with some nasty virus program!  It could be
  1929.         something harmless or intended.  You'll have to be the judge.
  1930.  
  1931.         +===============================================================+
  1932.         |Open File with Write access being attempted on:                |
  1933.         | <filename>                                                    |
  1934.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1935.         +===============================================================+
  1936.  
  1937.         If you see the above message:  Don't Panic!  When a program opens
  1938.         a file, it may open the file for different types of access.  One
  1939.         access method prohibits writing to the file.  Another allows you
  1940.         to write to the file.  However, lazy programmers (myself included
  1941.         in this category from time to time) will often open a file for
  1942.         read *and* write access, even though they have no intention of
  1943.         ever doing a write into the file.  FLU_SHOT+ isn't smart enough
  1944.         to be able to figure out what a program *might* do in the future,
  1945.         so it will alert you to an attempt to open the indicated
  1946.         protected file with write access allowed.  Again, you'll have to
  1947.         consider whether the program opening the file is a "trusted"
  1948.         program or not and you'll have to then decide what action to
  1949.         take.
  1950.  
  1951.         +===============================================================+
  1952.         |Handle Write Access being attempted on:                        |
  1953.         | <filename>                                                    |
  1954.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1955.         +===============================================================+
  1956.  
  1957.         If you see this message, it means that some program is trying to
  1958.         write to a protected file through an access method known as
  1959.         "handle access".  This should normally never happen, with the
  1960.         caveats raised above in the "Open With Write Access" section.
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.                                        27
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.         There are three separate messages you'll see if a program
  1985.         attempts to rename a protected file (you'll only see one of these
  1986.         messages at a time, though):
  1987.  
  1988.  
  1989.         +===============================================================+
  1990.         |FCB Rename being attempted on source file:                     |
  1991.         |FCB Rename being attempted on target file:                     |
  1992.         |Handle Rename being attempted on:                              |
  1993.         | <filename>                                                    |
  1994.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  1995.         +===============================================================+
  1996.  
  1997.         This indicates what type of operation is attempting to rename a
  1998.         protected file.  FCB's are a relic of the older CP/M days, and
  1999.         "handles" are a newer concept, a little more modern.  In any
  2000.         event, this tells you that a file is being renamed.  It is
  2001.         possible that a trojan or virus writer will attempt to rename an
  2002.         existing protected file to some other name, then rename a
  2003.         trojaned or virused program in its stead.  FLU_SHOT will alert
  2004.         you to this action:  again, though, you'll have to decide what to
  2005.         do about it.
  2006.  
  2007.         +===============================================================+
  2008.         |Delete being attempted on:                                     |
  2009.         | <filename>                                                    |
  2010.         |Press "Y" to allow, "G" to go till exit, any other key to fail.|
  2011.         +===============================================================+
  2012.  
  2013.         Pretty much self-evident as to what's happening here, there are
  2014.         very few reasons why one of the files you've opted to protect
  2015.         should be deleted.
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.                                        28
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.                           How Good is FLUSHOT+, Really?
  2051.  
  2052.         FLU_SHOT+ is a pretty handy piece of code.  But, it can't
  2053.         absolutely protect you from a worm.  No software can do that. 
  2054.         There are ways around FLU_SHOT+.  I'm of two minds about
  2055.         discussing them, since the worms out there are reading it this,
  2056.         too.  So I'll only discuss them in passing.  And I'll tell you
  2057.         what I use here to protect myself from worms.  First, though, a
  2058.         little story to tell you what it's like here, and how I protect
  2059.         myself from getting wormed.
  2060.  
  2061.         The RamNet Bulletin Board System site I run is open access. No
  2062.         need to register, or to leave your phone number or address,
  2063.         although a note to that effect is always appreciated.  As
  2064.         mentioned above, I dare the worm to try to affect the disk of
  2065.         somebody who can fight back.  A couple of of worms have tried and
  2066.         I have a nice collection of Trojans and viruses.  Obviously, I
  2067.         run FLU_SHOT+ on my board, along with checking incoming files
  2068.         with CHK4BOMB.  My procedure for testing out newly uploaded code
  2069.         involves me doing a backup, installing all sorts of software to
  2070.         monitor what is going on, and doing a checksum on all files on
  2071.         the disk.  I then try out all of the code I get, primarily to
  2072.         determine if the code is of high enough quality to be posted. 
  2073.         After testing out all of the weeks uploads, I run the checksum
  2074.         program again to determine of any of my files might have been
  2075.         modified by a worm's virus program.
  2076.  
  2077.         Recently, what looked like a decent little directory lister was
  2078.         posted to the board.  For some reason I've yet to fathom,
  2079.         directory aid programs seem to be the ones which have the highest
  2080.         percentage of Trojans attached to them.
  2081.  
  2082.         This directory aid program listed my directories in a wonderful
  2083.         tree structure, using different colors for different types of
  2084.         files.  Nice program.  When it exited, however, it went out and
  2085.         looked for a directory with the word "FLU" in it.  Once it found
  2086.         a directory with a match in it, it proceeded to try to erase all
  2087.         of the files in that directory. An assault! No big deal.  That's
  2088.         what backups are for.
  2089.  
  2090.         But it brings up an interesting point:  I was attacked by a
  2091.         clever worm, and it erased a bunch of files which were pretty
  2092.         valuable.  All of the protection I had would have been for naught
  2093.         if I didn't use the first line of defense from these worms:  full
  2094.         and adequate backup.
  2095.  
  2096.         I've spent three years of my life developing one particular
  2097.         software package.  Imagine what would have happened if that had
  2098.         been erased by a worm!  Fortunately, I make backups at least once
  2099.         a day, and usually more frequently than that.  You should, too.
  2100.  
  2101.         Now, I quarantine that machine as well.  I spent a couple of
  2102.         dollars and bought a bunch of bright red floppy disks.  The basic
  2103.         rule around here is that Red Disks are the only disks that go
  2104.         into the BBS machine, and the Red Disks go into no other machine. 
  2105.  
  2106.  
  2107.                                        29
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.         You see, I *know* that there is some worm out there who is gonna
  2117.         find some way to infect my system.  No matter what software
  2118.         protection I use, there *is* a way around it.
  2119.  
  2120.         You needn't be concerned though -- you're making backups on a
  2121.         regular basis, right?  And, you aren't asking for trouble.  I am,
  2122.         I expect to find it, and it is sort of amusing to see what the
  2123.         worms out there are wasting their efforts on.
  2124.  
  2125.         At this point, Trojans and Viruses are becoming a hobby with me:
  2126.         watching what the worms try to do, figuring out a way to defend
  2127.         against it, and then updating the FLU_SHOT series.
  2128.  
  2129.         However, there is a possibility that the FLU_SHOT series (as well
  2130.         as other protection programs which are just as valuable) are
  2131.         causing an escalation of the terms of this war.  The worms out
  2132.         there are sick individuals.  They must enjoy causing the damage
  2133.         they do.  But they haven't the guts to stand up and actually do
  2134.         something in person.  They prefer to hide behind a mist of
  2135.         anonymity.
  2136.  
  2137.         But you have the ultimate defense!  No, not the FLU_SHOT+
  2138.         program.
  2139.  
  2140.         FULL AND ADEQUATE BACKUPS!
  2141.  
  2142.         There are a variety of very good backup programs which can save
  2143.         you more work than you can imagine.  I use the FASTBACK+ program,
  2144.         which is a great little program.  I backup 30Megs once in a
  2145.         while, and do an incremental backup on a very frequent basis. 
  2146.         There are a variety of very good commercial, public domain, and
  2147.         shareware backup programs out there.  Use them!  Because, no
  2148.         matter what software protection you use, somebody will find a way
  2149.         around it once day.  But they can't find a way around your
  2150.         backups.  And, if you (and everyone else) do regular backups,
  2151.         you'll remove the only joy in life these worms have.  They'll
  2152.         kill themselves, hopefully, and an entire subspecies will be
  2153.         wiped out -- and you'll be partially responsible!
  2154.  
  2155.         My advance thanks for helping to exterminate these little
  2156.         slimebuckets.  But that brings me to something else.
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.                                        30
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.                                  Reward Offered
  2183.  
  2184.         Somebody out there knows who the worms are.  Even they must have
  2185.         someone who is a friend. True, I can't think of any reason
  2186.         someone would befriend a worm.  But somebody who doesn't know
  2187.         better has.
  2188.  
  2189.         Well, I'm offering a reward for the capture and conviction of
  2190.         these worms.
  2191.  
  2192.         Enough already with software protection schemes, hardware
  2193.         protection schemes, or any protection at all.  It shouldn't be
  2194.         required, dammit!
  2195.  
  2196.         Here's the deal:
  2197.  
  2198.         In this archive is a form called REWARD.FRM.  If you're a
  2199.         software or hardware manufacturer, or you have some software or
  2200.         hardware you don't need, consider filling out that form, and
  2201.         donating it to a worthy cause.  I don't know what the legal and
  2202.         tax ramifications of that donation would be.  I'm not a lawyer
  2203.         and we can cross that bridge when we get to it.
  2204.  
  2205.         Anyway, if you know one of these worms, turn them in!  Call me
  2206.         up, send me a letter, a telegram, or leave a message for me on my
  2207.         BBS.  Indicate who you *know* is worming about.  I'll keep your
  2208.         name confidential.
  2209.  
  2210.         It is surprisingly easy to get the authorities in on this --
  2211.         they're as concerned about what is happening to our community as
  2212.         we are.  I'll presume that they'll end up putting a data tap on
  2213.         the phone line of the accused worm.  Then, when he next uploads a
  2214.         Trojan or a virus to a BBS, he'll get nailed.  The authorities
  2215.         are pretty good about this stuff: they'll not tap a phone or take
  2216.         any action whatsoever without adequate proof.  Will your dropping
  2217.         a dime on this worm be adequate proof?  I don't know.   Again, a
  2218.         bridge to cross when we approach it.
  2219.  
  2220.         However, assuming that this slimeball gets nailed, you'll get all
  2221.         of the software and hardware which other people have donated. And
  2222.         the satisfaction of knowing that you've done a Good Thing, that
  2223.         you've helped an industry and community continue to grow.  This
  2224.         *is* your community, and the vast majority of people in it are
  2225.         good people who shouldn't have to fear from your friend.  Your
  2226.         friend is not really a friend: he uses you to justify his own
  2227.         existence.  When someone uses you like that, they're not a
  2228.         friend, they're a leach.  And you've probably got better things
  2229.         to do then let somebody use you like that.
  2230.  
  2231.         Most importantly, the worm out there won't know if one of his
  2232.         friends has already turned him in.  So he won't know if his phone
  2233.         is tapped.  If *I* were a worm, and considering what kind of
  2234.         friends I would have, I'd be sure that somebody dropped a dime on
  2235.         me.  And therefore an intelligent worm (perhaps I'm giving the
  2236.         worm too much credit?) must presume that their line is tapped and
  2237.  
  2238.  
  2239.                                        31
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.         that they're gonna go to jail if they continue what they're
  2249.         doing.
  2250.  
  2251.         So just stop, you miserable little lowlife, huh?  You're going to
  2252.         be arrested. You're going to have to put up with indignities
  2253.         which even you don't deserve!  Your equipment will be
  2254.         confiscated.  You'll never get a job in the industry.  You're
  2255.         going to go to jail. 
  2256.  
  2257.         All because one of your friend's actually has a conscience and
  2258.         knows what is right and what is wrong.  And what you're doing is
  2259.         wrong.
  2260.  
  2261.         So, let me get back to the kind of programming I enjoy --
  2262.         productive programming.  And turn your programming to useful,
  2263.         interesting, and productive programming.  You have the talent to
  2264.         do something useful and good with your life.  What you're doing
  2265.         is hurting the industry and hurting the community which would
  2266.         welcome someone with your talents with open arms.
  2267.  
  2268.         And the satisfaction of helping far surpasses the satisfaction
  2269.         you must get from hurting innocent people.
  2270.  
  2271.         So just stop.
  2272.  
  2273.  
  2274.         Sincerely, Ross M. Greenberg
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.                                        32
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.